﻿#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
////实现两个数相加
//int add(int a, int b)
//{
//	return a + b;
//}
//void cal(int(*p)(int, int))
//{
//	int ret = 0;
//	int a, b;
//	printf("请输入两个操作数:\n");
//	scanf("%d %d", &a, &b);
//	ret = p(a, b);
//	printf("结果是%d\n", ret);
//}
//int main()
//{
//	cal(add);
//	return 0;
//}
//#include<stdio.h>
//void bubble(int* arr, int sz)
//{
//	//比对轮数的循环
//	for (int i = 0; i < sz - 1; i++)
//	{
//		int flag = 1;
//		//每一轮所需要比较的次数的循环
//		for (int j = 0; j < sz - 1 - i; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int temp = arr[j];
//				arr[j] = arr[j + 1];;
//				arr[j + 1] = temp;
//				flag = 0;
//			}
//		}
//		if (flag = 1)
//		{
//			break;
//		}
//	}
//}
//void arr_print(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
//{
//	int arr[10] = { 2,1,5,3,7,9,10,8,12,11 }; 
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble(arr, sz);
//	arr_print(arr, sz);
//	return 0;
//}
//#include<stdio.h>
//#include<stdlib.h>
//int cmp(void* v1, void* v2)
//{
//	return *(int*)v1 - *(int*)v2;
//}
//int main()
//{
//	int arr[5] = { 2,1,5,4,3 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(int), cmp);
//	for (int i = 0; i < 5; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	char c = 'x';
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof a);
//	printf("%d\n", sizeof(c));
//	printf("%d\n", sizeof(int));
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	char arr1[3] = { 'a', 'b', 'c' };
//	char arr2[] = "abc";
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));
//	printf("%d\n", sizeof(arr1));
//	printf("%d\n", sizeof(arr2));
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	char arr1[3] = { 'a', 'b', 'c' };
//	char arr2[] = "abc";
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));
//	printf("%d\n", sizeof(arr1));
//	printf("%d\n", sizeof(arr2));
//		return 0;
//}
//#include<stdio.h>
//int main()
//{
//	char arr[] = {'a','b','c','d','e','f'};
// printf("%d\n", sizeof(arr));
// printf("%d\n", sizeof(arr+0));
// printf("%d\n", sizeof(*arr));
// printf("%d\n", sizeof(arr[1]));
// printf("%d\n", sizeof(&arr));
// printf("%d\n", sizeof(&arr+1));
// printf("%d\n", sizeof(&arr[0]+1));
//}
//#include<stdio.h>
//int main()
//{
//	char arr[] = { 'a','b','c','d','e','f' };
//	printf("%d\n", sizeof(arr));
//	printf("%d\n", sizeof(arr + 0));
//	printf("%d\n", sizeof(*arr));
//	printf("%d\n", sizeof(arr[1]));
//	printf("%d\n", sizeof(&arr));
//	printf("%d\n", sizeof(&arr + 1));
//	printf("%d\n", sizeof(&arr[0] + 1));
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr[] = { 'a','b','c','d','e','f' };
//	printf("%d\n", strlen(arr));
//	printf("%d\n", strlen(arr + 0));
//	printf("%d\n", strlen(*arr));
//	printf("%d\n", strlen(arr[1]));
//	printf("%d\n", strlen(&arr));
//	printf("%d\n", strlen(&arr + 1));
//	printf("%d\n", strlen(&arr[0] + 1));
//}
//#include<stdio.h>
//int main()
//{
//	char arr[] = "abcdef";
//	printf("%d\n", sizeof(arr));
//	printf("%d\n", sizeof(arr + 0));
//	printf("%d\n", sizeof(*arr));
//	printf("%d\n", sizeof(arr[1]));
//	printf("%d\n", sizeof(&arr));
//	printf("%d\n", sizeof(&arr + 1));
//	printf("%d\n", sizeof(&arr[0] + 1));
//}
//#include<stdio.h>
//int main()
//{
//	char arr[] = "abcdef";
//	printf("%d\n", strlen(arr));
//	printf("%d\n", strlen(arr + 0));
//	printf("%d\n", strlen(&arr));
//	printf("%d\n", strlen(&arr + 1));
//	printf("%d\n", strlen(&arr[0] + 1));
//}
//#include<stdio.h>
//int main()
//{
//	char* p = "abcdef";
//	printf("%d\n", sizeof(p));
//	printf("%d\n", sizeof(p + 1));
//	printf("%d\n", sizeof(*p));
//	printf("%d\n", sizeof(p[0]));
//	printf("%d\n", sizeof(&p));
//	printf("%d\n", sizeof(&p + 1));
//	printf("%d\n", sizeof(&p[0] + 1));
//}
//#include<stdio.h>
//int main()
//{
//	char* p = "abcdef";
//	printf("%d\n", strlen(p));
//	printf("%d\n", strlen(p + 1));
//	printf("%d\n", strlen(*p));
//	printf("%d\n", strlen(p[0]));
//	printf("%d\n", strlen(&p));
//	printf("%d\n", strlen(&p + 1));
//	printf("%d\n", strlen(&p[0] + 1));
//}
//#include<stdio.h>
//int main()
//{
//	int a[3][4] = { 0 };
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof(a[0][0]));
//	printf("%d\n", sizeof(a[0]));
//	printf("%d\n", sizeof(a[0] + 1));
//	printf("%d\n", sizeof(*(a[0] + 1)));
//	printf("%d\n", sizeof(a + 1));
//	printf("%d\n", sizeof(*(a + 1)));
//	printf("%d\n", sizeof(&a[0] + 1));
//	printf("%d\n", sizeof(*(&a[0] + 1)));
//	printf("%d\n", sizeof(*a));
//	printf("%d\n", sizeof(a[3]));
//}
////在X86环境下
////假设结构体的⼤⼩是20个字节
////程序输出的结果是啥？
//#include <stdio.h>
//struct Test
//{
//	int Num;
//	char* pcName;
//	short sDate;
//	char cha[2];
//	short sBa[4];
//}*p = (struct Test*)0x100000;
//int main()
//{
//	printf("%p\n", p + 0x1);
//	printf("%p\n", (unsigned long)p + 0x1);
//	printf("%p\n", (unsigned int*)p + 0x1);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
//	int* p;
//	p = a[0];
//	printf("%d", p[0]);
//	return 0;
//}
 //假设环境是x86环境，程序输出的结果是啥？
//#include <stdio.h>
//int main()
//{
//	int a[5][5];
//	int(*p)[4];
//	p = a;
//	printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	char* c[] = { "ENTER","NEW","POINT","FIRST" };
//	char** cp[] = { c + 3,c + 2,c + 1,c };
//	char*** cpp = cp;
//	printf("%s\n", **++cpp);
//	printf("%s\n", *-- * ++cpp + 3);
//	printf("%s\n", *cpp[-2] + 3);
//	printf("%s\n", cpp[-1][-1] + 1);
//	return 0;
//}
//#include<stdio.h>
//#include<ctype.h>
//#include<string.h>
//int main()
//{
//	char str[] = "Test String";
//	for (int i = 0; i < strlen(str); i++)
//	{
//		if (islower(str[i]))
//		{
//			str[i] = toupper(str[i]);
//		}
//	}
//	printf("%s", str);
//	return 0;
//}
//#include <stdio.h>
//#include <string.h>
//#include<assert.h>
//size_t my_strlen(const char* str)
//{
//	assert(str);
//	char* p = str;
//	while (*p != '\0')
//	{
//		p++;
//	}
//	return p - str;
//}
//int main()
//{
//	const char* str1 = "abcdef";
//	const char* str2 = "bbb";
//	if (my_strlen(str2) >my_strlen(str1))
//	{
//		printf("str2>str1\n");
//	}
//	else
//	{
//		printf("srt1>str2\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//#include<string.h>
//char* my_strcpy(char* dest, const char* sour)
//{
//	assert(dest && sour);
//	char* ret = dest;
//	while (*sour != '\0')
//	{
//		*dest++ = *sour++;
//
//	}
//	*dest = *sour;//拷贝'\0'
//	return ret;//返回目标空间的地址
//}
//int main()
//{
//	char  str1[] = "1234353xxxxxxxx";
//	char  str2[] = "234554656";
//	strcpy(str1, str2);
//	printf("%s", str1);
//	return  0;
//}
//#include<stdio.h>
//int main()
//{
//	char str1[100] = "abc";
//	strcat(str1, str1);
//	printf("%s", str1);
//	return 0;
//}
//#include<stdio.h>
//char* my_strcat(char* dest, const char* sour)
//{
//	char* ret = dest;//保留目标字符串地址
//	while (*dest != '\0')
//	{
//		dest++;
//	}
//	while (*dest++ = *sour++)
//	{
//		;
//	}
//	return ret;
//}
//int m_strcmp(const char* str1, const char* str2)
//{
//	while(*str1==*str2)
//	{
//		if (*str1 == '\0')
//		{
//			return 0;
//		}
//		str1++;
//		str2++;
//	}
//	return *str1 -*str2;
//}
//int main()
//{
//	char str1[10] = "abcc";
//	char str2[10] = "abde";
//	if (strncmp(str1, str2, 2)==0)
//	{
//		printf("str1等于str2");
//	}
//	return 0;
//}
//#include <stdio.h>
//#include <string.h>
//int main()
//{
//	char str[] = "This is a simple string";
//	char* pch;
//	pch = strstr(str, "simple");
//	strncpy(pch, "sample", 6);
//	printf("%s\n", str);
//	return 0;
//}
#include<stdio.h>
char* my_strstr(const char* str1, const char* str2)
{	
	if (*str2 == '\0')
	{
		return (char*)str1;
	}
	while (*str1 != '\0')
	{
		char* p1 = str1;
		char* p2 = str2;
		while (*p1 == *p2)
		{
			if (*p1 == '\0')
			{
				return (char*)str1;
			}
			p1++;
			p2++;
		}
		str1++;
	}
	return NULL;
}
int main()
{

	return 0;
}